<?php

namespace App\Http\Controllers\Admin;

use App\Models\Node;
use App\Models\User;
use App\Role;
use Illuminate\Http\Request;
use Illuminate\Mail\Message;

class UserController extends BaseController
{
    // 用户列表
    public function index()
    {
        // 获取用户列表
        $data = User::orderBy('id', 'asc')->withTrashed()->paginate($this->pagesize);
        // 返回数据
        return view('admin.user.index', compact('data'));
    }

    // 添加用户显示
    public function create()
    {
        // 获取角色列表
        $data = Role::where('deleted_at', null)->get();
        // 返回新增用户页面
        return view('admin.user.create', compact('data'));
    }

    // 添加用户提交
    public function store(Request $request)
    {
        // 验证数据
        $validate = $this->validate($request, [
            'truename' => 'required',
            // 用户名唯一性验证
            'username' => 'required|unique:users,username',
            'role_id' => 'required',
            // 邮箱验证
            'email'    => 'required|email',
            // 密码一致
            'password' => 'required|confirmed',
            // 电话  自定义
            'phone'    => 'required|phone',
            'gender'   => 'required'
        ]);

        // 添加用户入库
        // 密码加密
        $validate['password'] = bcrypt($validate['password']);
        // dump($validate);
        // 添加用户
        User::create($validate);
        // 发送邮件---富文本邮件 laravel 自带的邮件发送
        \Mail::send('mail.adduser', ['user' => $validate['truename']], function (Message $message) use ($validate) {
            $message->to($validate['email']);
            $message->subject('欢迎加入哪里跑鸡蛋公司');
        });

        // 跳转至列表页
        return redirect(route('admin.user.index'))->with(['success' => '添加用户成功']);
    }

    // 删除用户
    public function del($id)
    {
        // 变为了软删除
        User::destroy($id);
        // 强制删除 在配置了软删除的时候的真实删除
        // User::find($id)->forceSelete();
        $msg = ['msg' => '删除成功', 'status' => 200];
        return json_encode($msg);
    }

    // 恢复软删除用户
    public function restore($id)
    {
        User::onlyTrashed()->where('id', $id)->restore();
        return redirect(route('admin.user.index'));
    }

    // 批量删除
    public function delall(Request $request)
    {
        $res = $request->get('id');
        User::destroy($res);
        return ['msg' => '批量删除成功', 'status' => 200];
    }

    // 用户修改页面显示
    public function mod($id)
    {
        $user = User::find($id);
        return view('admin.user.mod', compact('user'));
    }

    // 用户修改提交
    public function update(Request $request)
    {
        $id       = $request->get('id');
        $validate = $this->validate($request, [
            'truename' => 'required',
            'phone'    => 'required|phone',
            'email'    => 'required|email',
            'gender'   => 'required'
        ]);
        // 数据库修改  User
        User::where('id', $id)->update($validate);
        // 修改成功跳转页面至用户列表页
        return redirect(route('admin.user.index'))->with('success', '修改成功');
    }

    // 用户详情页面
    public function detail($id)
    {
        $user = User::find($id);
        return view('admin.user.detail', compact('user'));
    }

    // 给用户分配角色 页面展示
    public function role(User $user)
    {
        $role = Role::where('deleted_at', null)->get();
        return view('admin.user.role', compact('role', 'user'));
    }

    // 给用户分配角色  提交
    public function rolesave(Request $request, User $user)
    {
        $data = $this->validate($request, [
            'role_id' => 'required|min:1'
        ]);
        // dd($user->id);
        User::where('id', $user->id)->update($data);
        return redirect(route('admin.user.index'));
    }
}
